package br.com.mrh.dao;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

import br.com.mrh.db.DBNames;
import br.com.mrh.db.Retorno;
import br.com.mrh.entity.IBaseEntidade;

/**
 * Classe abstrata Base para uma classe DAO
 * @author 	alex.paula
 * @since 	17/01/2012
 * @version 1.0
 */
public abstract class BaseDAO implements Serializable {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1L;
	
	/** Gravar os log's */
	protected transient static Logger log = Logger.getLogger(Class.class);
	
	@Autowired
	/** JdbcTemplate auto injecao do Spring **/
	protected transient JdbcTemplate 	jdbcTemplate;
	
	/**
	 * Metodo que devolve Retorno do banco de Dados em uma Entidade
	 * @param map
	 * @return Retorno
	 */
	@SuppressWarnings("unchecked")
	protected Retorno getRetorno(Map<String, Object> map){
		
		Retorno retorno = new Retorno();
		
		retorno.setCodRetorno( ((BigDecimal) map.get(DBNames.CODIGO_RETORNO)).intValue() );
		retorno.setMsgRetorno((String) map.get( DBNames.MENSAGEM_RETORNO ));
		retorno.setEntidades( ((List<IBaseEntidade>) map.get(DBNames.DADOS_RETORNO)));
		
		return retorno;
	}
}
